#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：pytest_allure_pytest-html_study 
@File    ：02_重复执行用例插件.py
@IDE     ：PyCharm 
@Author  ：XiaoDengYa
@Date    ：2021/6/3/003 13:52 
"""

"""
前言
平常在做功能测试的时候，经常会遇到某个模块不稳定，偶然会出现一些bug，对于这种问题我们会针对此用例反复执行多次，最终复现出问题来
自动化运行用例时候，也会出现偶然的bug，可以针对单个用例，或者针对某个模块的用例重复执行多次
"""
# 安装：pip3 install pytest-repeat -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

# 执行用例：pytest --html=report.html --self-contained-html  -s --reruns=5 --count=2 10fixture_request.py

# count=2 重试两次

"""
重复测试直到失败（重点！）
如果需要验证偶现问题，可以一次又一次地运行相同的测试直到失败，这个插件将很有用
可以将pytest的 -x 选项与pytest-repeat结合使用，以强制测试运行程序在第一次失败时停止
py.test --count=1000 -x test_file.py
"""
"""
def test_example():
    import random
    flag = random.choice([True, False])
    print(flag)
    assert flag
"""

# @pytest.mark.repeat(5)  # 执行五次
# def test_repeat():
#     print("测试用例执行")

"""
--repeat-scope
命令行参数
作用：可以覆盖默认的测试用例执行顺序，类似fixture的scope参数
function：默认，范围针对每个用例重复执行，再执行下一个用例
class：以class为用例集合单位，重复执行class里面的用例，再执行下一个
module：以模块为单位，重复执行模块里面的用例，再执行下一个
session：重复整个测试会话，即所有测试用例的执行一次，然后再执行第二次
"""
# 案例一：class
"""
class Test_repeat:
    def test_repeat3(self):
        print("测试用例执行333")


class Test_repeat2:
    def test_repeat3(self):
        print("测试用例执行444")
"""
# 案例二：module
def test_repeat1():
    print("测试用例执行111")


def test_repeat2():
    print("测试用例执行222")


class Test_repeat:
    def test_repeat3(self):
        print("测试用例执行333")
